package com.promote.algorithm;

/**
 * @ClassName SingleNumber
 * Description 只出现一次的数字
 * @Author LiZiHao
 * Date 2022/3/8 14:47
 * @Version 1.0
 **/
public class SingleNumber {

    /**
     * 使用异或运算，将所有值进行异或
     * 异或运算，相异为真，相同为假，所以 a^a = 0 ;0^a = a
     * 因为异或运算 满足交换律 a^b^a = a^a^b = b 所以数组经过异或运算，单独的值就剩下了
     *
     * @param nums
     * @return
     */
    public int singleNumber(int[] nums) {
        int result = 0;

        for (int num : nums) {
            result = result ^ num;
        }
        return result;
    }
}
